/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package mx.its.dsw2.biblioteca.bl;

import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import mx.its.dsw2.biblioteca.dao.CategoriaDaoLocal;
import mx.its.dsw2.biblioteca.dao.CategoriaDeLibroDao;
import mx.its.dsw2.biblioteca.dao.CategoriaDeLibroDaoLocal;
import mx.its.dsw2.biblioteca.enumeracion.estadoTransaccion;
import mx.its.dsw2.biblioteca.modelo.Categoria;
import mx.its.dsw2.biblioteca.modelo.CategoriaDeLibro;
import mx.its.dsw2.biblioteca.modelo.Libro;

/**
 *
 * @author franciscojavier
 */
@Stateless
public class CategoriaBl implements CategoriaBlLocal {
    @EJB
    private CategoriaDeLibroDaoLocal categoriaDeLibroDao;

    
    @EJB
    private CategoriaDaoLocal categoriaDao;
   

    // Add business logic below. (Right-click in editor and choose
    // "Insert Code > Add Business Method")

    @Override
    public estadoTransaccion register(Categoria category) {
         if(categoriaDao.findDuplicity(category)){
           return estadoTransaccion.INCOMPLETO;
       }else{
           categoriaDao.create(category);
           return estadoTransaccion.COMPLETO;
       }
    }

    @Override
    public estadoTransaccion modify(Categoria category) {
         if(category.getId()==null || categoriaDao.find(category.getId())==null){
        return estadoTransaccion.INCOMPLETO;
        }
        else{
            categoriaDao.edit(category);
            return estadoTransaccion.COMPLETO;
        }
    }

    @Override
    public estadoTransaccion delete(Categoria category) {
        if(category.getId()==null || categoriaDao.find(category.getId())==null){
        return estadoTransaccion.INCOMPLETO;
        }
        else{
            categoriaDao.remove(category);
            return estadoTransaccion.COMPLETO;
        }
    }

    @Override
    public List<Categoria> getAll() {
      return categoriaDao.findAll();
    }
    
    @Override
    public Categoria findById(int idCategoria) {
      return categoriaDao.find(idCategoria);
    }

    @Override
    public List<Categoria> getListByBook(Libro book) {
        List<CategoriaDeLibro> lista=categoriaDeLibroDao.getListByBook(book);
        List<Categoria> listafinal= new ArrayList<Categoria>();
        for(CategoriaDeLibro cdl : lista){
            listafinal.add(cdl.getIdCategoria());
        }
        return listafinal;
    }
    
    
    
    

}
